thisdir = docs
SUBDIRS = 
include ../build/rules.make

DISTFILES = \
	clr-abi.txt                 \
	compiler.txt                \
	control-flow-analysis.txt   \
	cs-errors.config            \
	monodoc.xml                 \
	new-anonymous-design.txt    \
	order.txt                   \
	$(DOC_SOURCE_FILES)         \
	$(wildcard ecma334/*.xml)

DOC_SOURCE_FILES = \
	lang-csharp.source          \
	Mono.source                 \
	netdocs.source              \
	Novell.source

ASSEMBLED_DOCS = \
	cs-errors.tree cs-errors.zip      \
	ecma334.tree ecma334.zip          \
	Mono.tree Mono.zip                \
	netdocs.tree netdocs.zip          \
	Novell.tree Novell.zip            

MONODOC_SOURCES_INSTALL_FILES = \
	$(ASSEMBLED_DOCS)             \
	$(DOC_SOURCE_FILES)

CLEAN_FILES += $(ASSEMBLED_DOCS)

ifndef DISABLE_MCS_DOCS
ifneq ($(PROFILE), $(DEFAULT_PROFILE))
DISABLE_MCS_DOCS = yes
endif
endif

ifdef MCS_MODE
DISABLE_MCS_DOCS = yes
endif

csproj-local test-local run-test-local run-test-ondotnet-local doc-update:

clean-local:
	-rm -f $(CLEAN_FILES)

dist-local: dist-default


MONODOC_INSTALL_DIR = $(DESTDIR)$(mono_libdir)/monodoc

ifdef DISABLE_MCS_DOCS
all-local:

install-local:

uninstall-local:

else
all-local: $(ASSEMBLED_DOCS)

install-local:
	$(MKINSTALLDIRS) $(MONODOC_INSTALL_DIR) $(MONODOC_INSTALL_DIR)/sources
	$(INSTALL_DATA) $(MONODOC_SOURCES_INSTALL_FILES) $(MONODOC_INSTALL_DIR)/sources
	$(INSTALL_DATA) monodoc.xml $(MONODOC_INSTALL_DIR)

uninstall-local:
	-rm -f $(MONODOC_INSTALL_DIR)/monodoc.xml
	-rm -f $(addprefix $(MONODOC_INSTALL_DIR)/sources/,$(MONODOC_SOURCES_INSTALL_FILES))
endif



classdir = $(topdir)/class
doc_en   = Documentation/en

NETDOCS_DIRS = \
	$(classdir)/corlib/$(doc_en)                                        \
	$(classdir)/System.Windows.Forms/$(doc_en)			    \
	$(classdir)/Microsoft.Build.Engine/$(doc_en)                        \
	$(classdir)/Microsoft.Build.Framework/$(doc_en)                     \
	$(classdir)/Microsoft.Build.Utilities/$(doc_en)                     \
	$(classdir)/System.Configuration.Install/$(doc_en)                  \
	$(classdir)/System.Core/$(doc_en)                                   \
	$(classdir)/System.Data/$(doc_en)                                   \
	$(classdir)/System.Design/$(doc_en)                                 \
	$(classdir)/System.DirectoryServices/$(doc_en)                      \
	$(classdir)/System.Drawing/$(doc_en)                                \
	$(classdir)/System.Json/$(doc_en)                                   \
	$(classdir)/System.Net.Http/$(doc_en)                               \
	$(classdir)/System.Runtime.Remoting/$(doc_en)                       \
	$(classdir)/System.Runtime.Serialization/$(doc_en)                  \
	$(classdir)/System.Runtime.Serialization.Formatters.Soap/$(doc_en)  \
	$(classdir)/System.Security/$(doc_en)                               \
	$(classdir)/System.ServiceModel/$(doc_en)                           \
	$(classdir)/System.Web.Services/$(doc_en)                           \
	$(classdir)/System.Web/$(doc_en)                                    \
	$(classdir)/System.XML/$(doc_en)                                    \
	$(classdir)/System.Xml.Linq/$(doc_en)                               \
	$(classdir)/System/$(doc_en) 

MONO_DIRS = \
	$(classdir)/Commons.Xml.Relaxng/$(doc_en)          \
	$(classdir)/Mono.Cairo/$(doc_en)                   \
	$(classdir)/Mono.CSharp/$(doc_en)                  \
	$(classdir)/Mono.Data.Sqlite/$(doc_en)		   \
	$(classdir)/Mono.Debugger.Soft/$(doc_en)           \
	$(classdir)/Mono.Options/$(doc_en)                 \
	$(classdir)/Mono.Parallel/$(doc_en)		   \
	$(classdir)/Mono.Posix/$(doc_en)                   \
	$(classdir)/Mono.Security.Win32/$(doc_en)          \
	$(classdir)/Mono.Security/$(doc_en)                \
	$(classdir)/Mono.Simd/$(doc_en)

NOVELL_DIRS = \
	$(topdir)/class/Novell.Directory.Ldap/Documentation/en

NUNIT_DIRS = \
	$(topdir)/nunit20/core/$(doc_en)       \
	$(topdir)/nunit20/framework/$(doc_en)  \
	$(topdir)/nunit20/mocks/$(doc_en)      \
	$(topdir)/nunit20/util/$(doc_en)

# To support `make -jN`, we can't mention multiple targets in the same rule;
# DO NOT DO THIS:
#
#	  foo.tree foo.zip : Makefile
#     $(MDOC) assemble -o foo $(FOO_DIRS)
#
# If you do, make will try to biuld foo.tree & foo.zip concurrently, which
# breaks things badly... (read: "mdoc: sharing violation on path...foo.zip").
#
# The proper solution is to chain the rule dependencies so that only one file
# is the target of a rule.

netdocs.zip : netdocs.tree
netdocs.tree: Makefile
	$(MDOC) --debug assemble -o netdocs $(NETDOCS_DIRS)

Mono.zip : Mono.tree
Mono.tree: Makefile
	$(MDOC) --debug assemble -o Mono $(MONO_DIRS)

Novell.zip : Novell.tree
Novell.tree: Makefile
	$(MDOC) --debug assemble -o Novell $(NOVELL_DIRS)

cs-errors.zip : cs-errors.tree
cs-errors.tree: cs-errors.config Makefile
	$(MDOC) --debug assemble -o cs-errors -f error $<

ecma334.zip : ecma334.tree
ecma334.tree: Makefile
	$(MDOC) --debug assemble -o ecma334 -f ecmaspec ecma334

